|
Dynamic Multitasking
For the version 14 of the WarpOS the multitasking-kernel (the scheduler) was completely written new. WarpOS
V14 now supports dynamic multitasking, which is well-known from UNIX workstations and also from the AMIGA-software
"executive". With this feature now also the AMIGA-User comes to first-class multitasking!
The most important features of the new WarpOS scheduler are:
- There are no more static priorities supported, instead the distribution of the CPU time is made dynamically.
Every task, may it be ever so unimportant, gets his time to run. This means, there is no more the situation where
a task with a high priority blocks all the other tasks from being processed!
- Tasks, which have a low activity, will get for a short amount of time a high priority and more CPU time, if
they come to action again. With this feature, interactions of the user are processed more quickly, even if the
PowerPC is heavy stressed. The starting of a new task with a stressed PPC processor consumes only minimal time.
Now also the times are over, where the user had to wait a long time for starting programs when the system was stressed!
- The importance of a task now can be changed from outside (like the priorities). With this feature you can set
the CPU time a task should get. When running multitasking jobs you can regulate the speed of a task! This is easy
to demonstrate with the STORM-MESA-demos
- The scheduler now makes extensive statistics over the various tasks and over the whole system. These values
can be printed with the "stat" tool. For each task the CPU usage, the activity and some other parameters
are printed out.
- Some new tools were written, which make the handling of the WarpOS tasks easier, e.g. a tool called "killppc",
with which you can kill crashed WarpOS programs.
The hardware-driver-system
The new WarpUP has got a new structure. Now WarpUP supports a hardware driver system with driver-libraries ("warpHW.library").
For each PowerPC hardware there is needed a special driver to use WarpOS with this hardware. Every driver is different
and can be used only with the associated hardware. In the actual WarpUP package are driver-libraries for the following
hardware:
- CyberStormPPC
- BlizzardPPC
- Phase5 Developer Board
This driver system allows every manufacturer of PowerPC hardware to write his own driver, through which WarpOS
automatically works with the new hardware. In the WarpUP package there are all instructions and a sample project
included, that are needed to write such a driver.
This hardware driver system leads to an even greater independence of the hardware and of course we hope, that the
above list will grow soon!
Support of the BlizzardPPC hardware
WarpUP now also supports the BlizzardPPC hardware. But the usage of WarpUP for BlizzardPPC hardware users is a
little different than it was with the CyberStormPPC.
A great difference between the BlizzardPPC and older PPC hardware is that the "ppc.library" from Phase5
is in the ROM of the hardware and is opened immediately at boot time. The problem is, that the WarpOS can't run
parallel to the "ppc.library", therefore you had to reboot, if the "ppc.library" was active
and WarpOS was intended to be used. This can't be done anymore, because there is no way to stop the "ppc.library"
from being activated.
The only possibility to run the WarpOS is to try to remove the "ppc.library" and all the associated resources
from the system. But this isn't done automatically. The first requirement for the activation of the "Terminator"
feature is to set the environment variable
'powerpc/Terminator',
which can be done with the added installer script. If now WarpOS is started there appears a requester, which asks
the user, if the "ppc.library" and all it's associated resources should be removed from the system. The
user can accept this or cancel the boot sequence. In this case the "ppc.library" still remains active.
The "Terminator" feature can of course also be used with the existing PPC hardware, which has the advantage
that you haven't to reboot your system, when changing from ELF-software to WarpUP-software.
If the requester are annoying you, you can remove them. To do that, you have to set the environment variable "powerpc/HideWarning"
to 1. It has to be said, that if now the "Terminator" feature is enabled, the "ppc.library"
is removed without warning and under some circumstances you don't even notice that. So be warned to use this feature.
If there are still problems with WarpOS and newer PPC hardware (especially with newer Flash-ROM versions!) please
contact us, so that we can work out a solution.
Error-correction and detail improvements
The release 2 caused problems on some systems, which are due to the extreme little stack of the RAMLIB. This problem
is fixed now, therefore WarpOS now also runs on systems, which had this problem.
It has to be mentioned, that the "powerpc.library" V7 has also profited from these changes and should
run now even better. The V7.2 is included in the actual WarpUP package.
Besides an error was corrected, which was responsible for the problems which appeared when WarpOS functions tried
to allocate huge memory blocks. This was obvious in the *STORM-MESA* demos if you enlarged the window.
When creating PPC-mirror-tasks, in the case that the 68k-task is a CLI-background-task, the name of the started
program is taken for the name of the PPC-task, instead of the process name. This leads to the situation, that the
WarpOS-tasks are easier locatable in the task-statistics, because the name of the started program is contained.
This only works, if the programs are started with "run".
Developer-specific
The documentation of the WarpUP-API is now available in the Autodoc-format and also in the AmigaGuide format.
The prototype-file was extremely restructured for a better support of alternative compilers. The StormC specific
parts was excluded into a separate file.
Now there is also an FD-file for the "powerpc.library" available.
The new tool "throw" allows it to interrupt WarpOS-tasks from outside, if they are trapped in an endless
loop. Therefore an instruction-breakpoint-exception is called when the task is activated by the scheduler. With
this the developer can find the reason for the problem, because in the crash-requester there are many information
regarding the crash.
With the new function called "GetHALInfo" you can get information over the WarpUP-HAL. At this time you
can find out, how many emulated alignment-exceptions are caused, since the starting of WarpOS. These exceptions
appear, if the PowerPC tries to address floating-point values, which aren't located at an address which can be
divided by 4. The WarpUP-HAL (the "warp.library") catches these exceptions and runs an emulation, this
happens completely transparent for the WarpOS (this is implemented since the first version). So no application,
which supports WarpUP, has to bother about this, because for them these problems simply don't exist. But the occurrence
of these exceptions should be minimized to keep performance high.
The new function "FindTaskByID" allows it to find tasks by their ID number. With the new scheduler there
were also introduced ID numbers for tasks, which can simplify the usability.
The functions "SetScheduling" and "SetNICEValue" can help to modify the multitasking with the
new scheduler. With "SetNICEValue" you can change the so-called NICE value, which defines the importance
of a task (something like the old priorities).
Now it makes no difference on which side inter-CPU-messages are set free. In the case, that it is done by the CPU,
which hasn't allocated the message, there is made a context-switch, so that the release is made on the right side.
With that a better transparency for the programmer can be reached.
An important step in the direction of "resource tracking" was made: now every memory, which has been
allocated but has not been set free by a WarpOS-task will be set free automatically when the task ends.
Many thanks to Mario Klier for the translation.
|